﻿using star_questionnair.Models;

namespace star_questionnair.Services;

using System.Collections.Generic;

/// <summary>
/// 历史记录服务接口，定义与问卷和用户历史相关的操作
/// </summary>
public interface IHistoryService
{
    // 根据用户ID获取问卷ID列表
    List<int> GetQuestionnaireIdsByUserId(int userId);

    //作者
    List<Questionnaire> GetQuestionnaireBySelf(int authorId);
    
    //得到个人填写的问卷
    List<Questionnaire> GetListQuestionnaireByUserId(int userId);
    // 根据用户ID获取用户的回答记录列表
    List<Response> GetResponsesByUserId(int userId);

    // 插入用户和问卷的关联记录
    void InsertHistoryAssociation(int userId, int questionnaireId);

    // 根据用户ID获取用户的问卷列表
    List<Questionnaire> GetQuestionnairesByUserId(int userId);

    // 根据问卷ID获取问题列表
    List<Question> GetQuestionsByQuestionnaireId(int questionnaireId);
    
    Task<Questionnaire> GetQuestionnaireByIdAsync(int questionnaireId);

    // 根据问题ID获取选项列表
    List<Option> GetOptionsByQuestionId(int questionId);

    // 根据问题ID获取回答列表
    List<Answer> GetAnswersByQuestionId(int questionId);

    // 根据回答记录ID获取回答列表
    List<Answer> GetAnswersByResponseId(int responseId);

    // 根据用户和问题获取回答记录
    List<Answer> GetAnswersByUserAndQuestion(int userId, int questionId);

    // 根据选项ID获取对应的问题
    Question GetQuestionByOptionId(int optionId);

    // 根据选项ID获取回答
    Answer GetAnswerByOptionId(int optionId);

    // 获取完整的问卷数据（包含问题和选项）
    Questionnaire GetCompleteQuestionnaire(int questionnaireId);
    List<Question> GetListQuestionByQuestionnaireId(int questionnaireId);
    
    //得到问卷的完整信息
    Questionnaire GetWholeQuestionnaire(int questionnaireId);
    
    //根据问卷id得到答卷列表
    List<Response> GetListResponsesByQuestionnaireId(int questionnaireId);
    
    //得到个人的全部回答
    Task<List<Response>> GetListResponseByUserId(int userId);
}
